#ifndef RENDER_H_
#define RENDER_H_

// By: Jesse Guarascia de Urena
// Handy Dandy Render Functions

#include <SDL_opengl.h>
#include <SDL.h>
#include "Texture2D.h"
#include "Rect.h"
#include "Color.h"
#include <map>

namespace Render{
	// Draw a quad
	void DrawQuad(float x, float y, float w, float h, float rotation = 0.0f);
	void DrawQuad(Rect rect, float rotation = 0.0f);

	// Draw a textured quad
	void DrawTexturedQuad(float x, float y, float w, float h, Texture2D &texture, float rotation = 0.0f);
	void DrawTexturedQuad(Rect rect, Texture2D &texture, float rotation = 0.0f);
	void DrawTexturedQuad(Rect rect, Texture2D &texture, Rect clip, float rotation = 0.0f);

	// Draw a coloured quad
	void DrawColouredQuad(float x, float y, float w, float h, Color color, float rotation = 0.0f);
	void DrawColouredQuad(Rect rect, Color color, float rotation = 0.0f);
	void DrawColouredQuad(Rect rect, Color *color, float rotation = 0.0f);

	// Draw a single point
	void DrawPoint(float x, float y);
	void DrawColouredPoint(float x, float y, Color color);

	// Update rendering
	void Update();

	// Initialize the rendering system (generate the display lists)
	void Init();
};

#endif // RENDER_H_

